package org.ccu.common;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.RandomAccessFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class UpFile {
	HttpServletRequest request;
	HttpSession session;
	String upFileMessage = "";

	public HttpServletRequest getRequest() {
		return request;
	}

	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

	public HttpSession getSession() {
		return session;
	}

	public void setSession(HttpSession session) {
		this.session = session;
	}

	public String getUpFileMessage() {
		String fileName = null;
		try {
			
			String tempFileName = (String) session.getId();
			File f1 = new File("D:\\apache-tomcat-6.0.35\\webapps\\chaper6",
					tempFileName);
			FileOutputStream o = new FileOutputStream(f1);
			
			InputStream in = request.getInputStream();
			
			byte b[] = new byte[10000];
			int n;
			while ((n = in.read(b)) !=-1) {
				o.write(b, 0, n);
				
			}
			o.close();
			in.close();
			RandomAccessFile random = new RandomAccessFile(f1, "r");
			int second = 1;
			String secondLine = null;
			while (second <= 2) {
				secondLine = random.readLine();
				second++;
				
			}System.out.println("pp");
			int position = secondLine.lastIndexOf('=');
			
			fileName = secondLine.substring(position + 2,
					secondLine.length() - 1);
			System.out.println("pp");
			byte cc[] = fileName.getBytes("ISO-8859-1");
			fileName = new String(cc);
			session.setAttribute("Name", fileName);
			random.seek(0);
			long forthEndPosition = 0;
			int forth = 1;
			while ((n = random.readByte()) != -1 && (forth <= 4)) {
				if (n == '\n') {
					forthEndPosition = random.getFilePointer();
					forth++;
				}

			}
			File f2=new File("D:\\designinclass\\WebContent\\img",fileName);
			RandomAccessFile random2=new RandomAccessFile(f2, "rw");
			random.seek(random.length());
			long endPosition=random.getFilePointer();
			long mark=endPosition;
			int j=1;
			while((mark>=0)&&(j<=6)){
				mark--;
				random.seek(mark);
				n=random.readByte();
				if(n=='\n'){
					endPosition=random.getFilePointer();
					j++;					
				}
				
			}
			random.seek(forthEndPosition);
			long startPoint=random.getFilePointer();
			while(startPoint<endPosition-1){
				n=random.readByte();
				random2.write(n);
				startPoint=random.getFilePointer();
				
				
			}
			random2.close();
			random.close();
			f1.delete();
			upFileMessage=fileName+" Successfully UpLoad";
			return upFileMessage;
			
		} catch (Exception e) {
			// TODO: handle exception
			if(fileName!=null){
				upFileMessage=fileName+" Fail to UpLoad";
				return upFileMessage;
			}
			else{
				upFileMessage="";
				
				return upFileMessage;
			}
			
		}
	
	}

	public void setUpFileMessage(String upFileMessage) {
		this.upFileMessage = upFileMessage;
	}

}
